package main

import "fmt"

func q3(n int) int {
	//返回条件
	if n == 1 {
		return 1
	} else {
		return n * q3(n-1)
	}
}

// 斐波那锲数
func q4(n int) int {
	if n == 1 || n == 2 {
		return 1
	} else {
		return q4(n-1) + q4(n-2)
	}
}

// 一个数的阶乘,比如5
func q5() {
	var s = 1
	for i := 1; i <= 5; i++ {
		s *= i
	}
	fmt.Println(s)
}

func main() {
	//递归就是自己调用自己
	//必须先定义函数的退出条件，没有条件，递归就是死循环
	//go语言递归函数很可能会产生一大堆的goroutine，也可能会出现栈空间内存问题
	q3(2)
	q4(2)
	q5()
}
